package domein;

import java.util.Date;
import java.util.List;

import persistentie.Mapper;
import persistentie.MapperFactory;
import persistentie.SoortMapper;

public class Student implements IStudent
{
	private int studentNr;
	private String voornaam;
	private String naam;
	private int jaar;
	private String richting;
	private List<Afwezigheid> afwezigheden;
	private Mapper<Afwezigheid> mapper;
	
	
	// constructor
	public Student(int studentNr, String voornaam, String naam, int jaar,
			String richting) {
		super();
		this.studentNr = studentNr;
		this.voornaam = voornaam;
		this.naam = naam;
		this.jaar = jaar;
		this.richting = richting;
	
	}


	//set & get
	
	public int getStudentNr() {
		return studentNr;
	}


	public void setStudentNr(int studentNr) {
		this.studentNr = studentNr;
	}


	public String getVoornaam() {
		return voornaam;
	}


	public void setVoornaam(String voornaam) {
		this.voornaam = voornaam;
	}


	public String getNaam() {
		return naam;
	}


	public void setNaam(String naam) {
		this.naam = naam;
	}


	public int getJaar() {
		return jaar;
	}


	public void setJaar(int jaar) {
		this.jaar = jaar;
	}


	public String getRichting() {
		return richting;
	}


	public void setRichting(String richting) {
		this.richting = richting;
	}


	public List<Afwezigheid> getAfwezigheden() {
		return afwezigheden;
	}


	public void setAfwezigheden(List<Afwezigheid> afwezigheden) {
		this.afwezigheden = afwezigheden;
	}


	public Mapper<Afwezigheid> getMapper() {
		return mapper;
	}


	public void setMapper(Mapper<Afwezigheid> mapper) {
		this.mapper = mapper;
	}
	
	
	private void afwezighedenOpvragen()
	{
		if(mapper == null)
			mapper = MapperFactory.geefMapper(SoortMapper.AFWEZIGHEID);
		afwezigheden = mapper.geefLijstPerItem(studentNr);
	}
	
	// nieuwe methoden
	
	public int aantalAfwezigheden()
	{
		if(afwezigheden == null)
			afwezighedenOpvragen();
		return afwezigheden.size();
	}
	
	public Afwezigheid geefAfwezigheid(int index)
	{
		if(afwezigheden == null)
			afwezighedenOpvragen();
		return afwezigheden.get(index);
	}
	
	
	// methods voor de tableModel
	
	public void setTypeAfwezigheid(int index, TypeAfwezigheid typeAfwezigheid)
	{
		geefAfwezigheid(index).setTypeAfwezigheid(typeAfwezigheid);
	}
	
	public void setSoortWettiging(int index, String soortWettiging)
	{
		geefAfwezigheid(index).setSoortWettiging(soortWettiging);
	}

	public void setWettigingDatum(int index, Date wettigingDatum)
	{
		geefAfwezigheid(index).setWettigingDatum(wettigingDatum);
	}
}
